Large-scale software development efforts require proper coordination and management of teams of software engineers and test engineers. When a software development effort involves a large group of engineers simultaneously working on multiple versions and releases of a large number of different source modules of the software product, confusion and inefficiency easily results if the development process and subsequent product release are not properly managed. For example, some engineers may be coding source modules for version 3.1 of a software product X while some engineers may be incorporating newer features into source modules for version 4.0, and still some engineers may be providing a fix to some problems reported in source modules of version 2.1. Note that it is possible to have overlap between the three groups of engineers, so that an engineer may be involved in all three efforts.
Compounding the problem is the fact that each version of a software product must pass through multiple developmental stages prior to its release, where advancing to the next stage requires the passing of some predetermined testing and approval process. To be tested, all the source modules for that version of the software product must be collected and built into a load. The process of load building is also called the compiling and linking of all the source modules. The resultant load or build is a software product to be further tested, or to be released and delivered to a customer when all the developmental stages have been passed.
This process of load building is currently a frequent cause of long periods of delay or lag time to a software product's production and delivery. Beyond the length of the build itself is the response time needed to inform key personnel of the build results in order to evaluate a completed build and proceed to the next stage in software development. Throughout the course of software development, the process of load building may be conducted many times. A significant delay during each load build can result in a considerable postponement of final product release.
It may be seen that because the process of building a software load is repeatedly performed in the development of a software product, considerable savings in time, energy and expense are possible if the process is automated or otherwise optimized.